﻿using Server.Engines.MLQuests.Objectives;
using Server.Engines.MLQuests.Rewards;
using Server.Items;

namespace Server.Engines.MLQuests.Definitions
{
    public class NewHavenEscort : BaseEscort
    {
        // Escort reward
        private static readonly BaseReward m_Reward = new ItemReward("Gold", typeof(Gold), 500);

        public NewHavenEscort(int title, int description, int progress, int destination, string region)
        {
            Activated = true;
            Title = title;
            Description = description;
            RefusalMessage =
                1072288; // I wish you would reconsider my offer.  I'll be waiting right here for someone brave enough to assist me.
            InProgressMessage = progress;

            Objectives.Add(new EscortObjective(new QuestArea(destination, region)));

            Rewards.Add(m_Reward);
        }

        // New Haven escorts do not count for 'helping a human in need'
        public override bool AwardHumanInNeed => false;
    }

    public class EscortToNHAlchemist : NewHavenEscort
    {
        public EscortToNHAlchemist()
            : base(1072314, 1042769, 1072326, 1073864, "the New Haven Alchemist")
        {
        }
    }

    public class EscortToNHBard : NewHavenEscort
    {
        public EscortToNHBard()
            : base(1072315, 1042772, 1072327, 1073865, "the New Haven Bard")
        {
        }
    }

    public class EscortToNHWarrior : NewHavenEscort
    {
        public EscortToNHWarrior()
            : base(1072316, 1042787, 1072328, 1073866, "the New Haven Warrior")
        {
        }
    }

    public class EscortToNHTailor : NewHavenEscort
    {
        public EscortToNHTailor()
            : base(1072317, 1042781, 1072329, 1073867, "the New Haven Tailor")
        {
        }
    }

    public class EscortToNHCarpenter : NewHavenEscort
    {
        public EscortToNHCarpenter()
            : base(1072318, 1042775, 1072330, 1073868, "the New Haven Carpenter")
        {
        }
    }

    public class EscortToNHMapmaker : NewHavenEscort
    {
        public EscortToNHMapmaker()
            : base(1072319, 1042793, 1072331, 1073869, "the New Haven Mapmaker")
        {
        }
    }

    public class EscortToNHMage : NewHavenEscort
    {
        public EscortToNHMage()
            : base(1072320, 1042790, 1072332, 1073870, "the New Haven Mage")
        {
        }
    }

    public class EscortToNHInn : NewHavenEscort
    {
        public EscortToNHInn()
            : base(1072321, 1042796, 1072333, 1073871, "the New Haven Inn")
        {
        }
    }

    public class EscortToNHFarm : NewHavenEscort
    {
        public EscortToNHFarm()
            : base(1072322, 1042799, 1072334, 1073872, "the New Haven Farm")
        {
        }
    }

    public class EscortToNHDocks : NewHavenEscort
    {
        public EscortToNHDocks()
            : base(1072323, 1042802, 1072335, 1073873, "the New Haven Docks")
        {
        }
    }

    public class EscortToNHBowyer : NewHavenEscort
    {
        public EscortToNHBowyer()
            : base(1072324, 1042805, 1072336, 1073874, "the New Haven Bowyer")
        {
        }
    }

    public class EscortToNHBank : NewHavenEscort
    {
        public EscortToNHBank()
            : base(1072325, 1042784, 1072337, 1073875, "the New Haven Bank")
        {
        }
    }
}
